Windows環境のレジストリを更新せずに SQL Workbench/J を導入する方法
はじめに
本来は、Windows環境からpsqlコマンドを使用してAmazon Redshiftにクエリを実行できると良いのですが、WindowsのDOSプロンプトでは、文字コードがUTF-8の場合に日本語のテーブル名やカラム名などに対応しておらず、マルチバイトが文字化けしてしまいます。今回はその回避方法として、 SQL Workbench/J を導入する方法をご紹介します。但し、本番環境などでは安易にアプリをインストールできませんので、Windows環境のレジストリを更新せずにファイルコピーのみで済む方法をご紹介します。
参考:クラスター管理ガイド - SQL Workbench/J を使用してクラスターに接続する
インストール
1.JDKのダウンロード
OracleのJava SE Runtime Environment 8 ダウンロードサイトからjre-8uXXX-windows-x64.tar.gzをダウンロードした後、アーカイブを展開してください。ダウンロードは、exeのインストーラーではなく、tar.gzファイルをダウンロードします。
2.SQL Workbench/Jのダウンロード
SQL Workbench/JのダウンロードサイトからDownload generic package for all systemsをクリックして、ダウンロードした後、アーカイブを展開してください。
3.JDBCドライバのダウンロード
接続対象のAmazon Redshift JDBC ドライバーをダウンロードします。driversフォルダを作成してその下に保存します。今回は、https://s3.amazonaws.com/redshift-downloads/drivers/RedshiftJDBC42-no-awssdk-1.2.10.1009.jarをダウンロードして配置しました。
4.起動コマンドの作成(SQLWorkbench64.cmd)
SQL Workbench/Jを起動するコマンドの作成しました。
@echo off title SQL Workbench/J setlocal set WORKBENCH_HOME=Workbench-Build123 "%~dp0jre1.8.0_162\bin\java.exe" -Dvisualvm.display.name=SQLWorkbench ^ -Xmx512m ^ -jar "%WORKBENCH_HOME%\sqlworkbench.jar" ^ -configDir=%WORKBENCH_HOME%\.sqlworkbench endlocal
5.上記フォルダ、コマンドの配置
上記フォルダやコマンドは、SQLWorkbench
というフォルダを作成して、全てコピーします。このフォルダはCドライブ直下やProgram Files
フォルダの下に置けるとは限りませんので、今回はDesktopに置くことを前提に進めます。SQLWorkbench
フォルダの構成は以下のとおりです。
上記のフォルダコマンドを以下の構成で配置します。
でも、毎回このフォルダを開いて、SQLWorkbench64.cmd をダブルクリックして実行するのは大変なので、SQLWorkbench64.cmdを右クリックしてショートカットを作成します。
このSQLWorkbench
というフォルダを複数の人に配布したい場合は、ショートカットのプロパティの中で指定しているパスを%USERPROFILE%
に変更するとユーザー毎のデスクトップのパスが取得できるようになります。以下のようにショートカットタブをカスタマイズします。
- リンク先(T): %USERPROFILE%\Desktop\SQLWorkbench\SQLWorkbench64.cmd
- 作業フォルダ(S): %USERPROFILE%\Desktop\SQLWorkbench
Amazon Redshift に接続する設定
JDBCドライバのパスの指定
SQL Workbench/Jを起動すると、Select Connection Profileというダイアログが表示されます。設定の名前(Profile Name)を入力して、Driverの中からAmazon Redshift(com.amazon.redshift.jdbc.Driver)
を選択して、先程ダウンロードしたJDBCドライバのパスを指定します。
JDBCドライバの接続の指定
URLはjdbc:redshift://<endpoint_url>:5439/<dbname>
を指定します。SSLによる暗号化通信する場合はURLの最後にSSLのオプションを追加しますので、jdbc:redshift://<endpoint_url>:5439/<dbname>?ssl=true&sslfactory=com.amazon.redshift.ssl.NonValidatingFactory
と指定します。
他のWindows環境に配布したい場合
上記のJDBCドライバ設定は、SQLWorkbench/Workbench-Build123/.sqlworkbench
フォルダの下にWbDriver.xml
というファイルに保存されます。JDBCドライバのパスは、絶対パスが登録されますので、SQLWorkbenchからの相対パスとして書き換えることで、このSQLWorkbench
のフォルダを他のWindowsにそのままコピーして利用が可能になります。
(変更前)
<string>C:\Users\<username>\Desktop\SQLWorkbench\drivers\RedshiftJDBC42-no-awssdk-1.2.10.1009.jar</string>
(変更後)
<string>drivers\RedshiftJDBC42-no-awssdk-1.2.10.1009.jar</string>
アンインストール
SQLWorkbench
というフォルダを削除すると実行ファイルと設定を削除できます。
最後に
今回は、Redshiftを例に解説しましたが、JDBCドライバで接続できるのでほかのDBでも同様にご利用可能です。他のアプリの依存関係がありJavaのバージョンをアップデート出来ない場合でも影響を与えることなく導入可能できますので、本番環境などでは安易にアプリをインストールできない状況に有効なワークアラウンドになるはずです。